package LeetCode;

public class No160 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        //我走过你走过的路，只为与你相拥
        if (headA == null || headB == null) {
            return null;
        }
        ListNode pA = headA, pB = headB;
        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
//        ListNode node1 = headA;
//        ListNode node2 = headB;
//        while(!(node1.next==null&&node2.next==null)&&node1!=node2){
//            node1=node1.next;
//            node2=node2.next;
//            if(node1==null) node1 = headB;
//            if(node2==null) node2 = headA;
//        }
//        if(node1!=node2&&node1.next==null&&node2.next==null) return null;
//        return node1;


//        int m=1;
//        HashMap<ListNode,Integer> map = new HashMap();
//        ListNode node = headA;
//        map.put(node,m);
//        while(node!=null){
//            node=node.next;
//            m++;
//            map.put(node,m);
//        }
//        node = headB;
//        if(map.getOrDefault(node,0)!=0) return node;
//        while(node!=null){
//            if(map.getOrDefault(node,0)!=0) return node;
//            node=node.next;
//        }
//        return null;
    }
}
